私の書いたC++/CLIとSetWindowsHookEx APIを使ったキーボードフックの試行に対して、更にNyaRuRuさんが試行してくれました。
詳細は上を読んで頂くとして、以下のような結論になっていますが、これには同意します。
結果は……見事クラッシュしました.というわけで C++/CLI でフックハンドラを実装するのはどうも旗色が悪そうな気がするわけですが,いかがでしょうか?
グローバルなフックは、他のプロセス空間にモジュールが入り込みますが、これが問題を引き起こすのは原理的にやむを得ないところでしょう。そのあたりは、ちょっと私の考えが甘かったかも。
とはいえ、こういうケースでも、容易にnative codeに戻ってAPIベースで書くことができるのがC++の強みです。「ダメならダメでいくらでも対応方法がある」のがC++の良いところだと感じます。
もちろん、その対応方法が**簡単**だとは言いませんけどね。